package fr.uniscol.siecle.dao.impl;

import fr.uniscol.dao.UniscolDaoSupport;
import fr.uniscol.model.BaseAnneeScolaire;
import fr.uniscol.model.RapportTraitement;
import fr.uniscol.siecle.dao.IDonneesSIECLECommunsDao;
import fr.uniscol.siecle.dao.IImportDonneesSIECLEDao;
import fr.uniscol.siecle.dao.mapper.DonneesSIECLECommunsRowMapper;
import fr.uniscol.siecle.model.Communs;
import fr.uniscol.siecle.model.FichierSIECLE;
import org.springframework.stereotype.Repository;

@Repository("donneesCommunsDao")
public class DonneesSIECLECommunsDaoImpl extends UniscolDaoSupport implements IDonneesSIECLECommunsDao, IImportDonneesSIECLEDao {

	@Override
	public Communs getDonneesCommuns(int annee, long etabId) {
		
		Communs communs = getJdbcTemplate().queryForObject("SELECT * FROM bee_communs WHERE annee=? AND etablissementid=? ", 
										new DonneesSIECLECommunsRowMapper(), 
										new Object[]{
													annee, 
													etabId
		});
		
		return communs;
	}
    
    @Override
    public boolean saveFichierSIECLE(BaseAnneeScolaire base, FichierSIECLE fichier, RapportTraitement rapport) {
        
        Communs communs = (Communs) fichier;
        
        int nbRowsAffected = getJdbcTemplate().update("UPDATE uni_etablissement "
                                                    + "SET uai=?,"
                                                    + "nom=?,adresse1=?,adresse2=?,adresse3=?,telephone=?,cp=?,bp=?,email=? "
                                                    + "WHERE etablissementid=?", 
            new Object[]{
                communs.getParametres().getUaj(),
                communs.getUaj().getDenom_principale(),
                communs.getUaj().getLigne_adresse_1(),
                communs.getUaj().getLigne_adresse_2(),
                communs.getUaj().getLigne_adresse_3(),
                communs.getUaj().getTelephone(),
                communs.getUaj().getCode_postal(),
                communs.getUaj().getBoite_postale(),
                communs.getUaj().getEmail_1(),
                base.getEtablissement().getId()
            });
        
        return nbRowsAffected == 1;
    }
    
    /*@Override
	public boolean saveFichierSIECLE(BaseAnneeScolaire base, FichierSIECLE fichier) {
		
		Communs communs = (Communs) fichier;
		
		String reqUpdate = "UPDATE bee_communs "
				+ "SET etab_uaj_id=?,"
				+ "    num_siren=?,"
				+ "    denom_princ=?,"
				+ "    denom_compl=?,"
				+ "    nom_resp=?,"
				+ "    qual_resp=?,"
				+ "    ligne_adresse_1=?,"
				+ "    ligne_adresse_2=?,"
				+ "    ligne_adresse_3=?,"
				+ "    boite_postale=?,"
				+ "    commune_etg=?,"
				+ "    telephone=?,"
				+ "    email_1=?,"
				+ "    code_type_etab=?,"
				+ "    code_secteur=?,"
				+ "    code_postal=?,"
				+ "    code_commune_insee=?,"
				+ "    code_pays=?,"
				+ "    as_debut_eleves=?,"
				+ "    as_fin_eleves=?,"
				+ "    as_debut_profs=?,"
				+ "    as_fin_profs=?,"
				+ "    asad_debut_eleves=?,"
				+ "    asad_fin_eleves=?,"
				+ "    asad_debut_profs=?,"
				+ "    asad_fin_profs=? "
				+ "WHERE annee=? AND etablissementid=? ";
		
		String reqInsert = "INSERT INTO bee_communs (annee, etablissementid, "
						 + "                         etab_uaj_id,"
						 + "						 num_siren, denom_princ,	denom_compl, 	nom_resp, 	qual_resp,"
						 + "						 ligne_adresse_1,	ligne_adresse_2,	ligne_adresse_3,	boite_postale, 	commune_etg,"
						 + "						 telephone,		email_1,	code_type_etab,		code_secteur,		code_postal,"
						 + "						 code_commune_insee,		code_pays, 		"
						 + "						 as_debut_eleves,			as_fin_eleves,		as_debut_profs,		as_fin_profs,"
						 + "						 asad_debut_eleves,			asad_fin_eleves,	asad_debut_profs,	asad_fin_profs) "
						 + "VALUES(?, ?, "
						 + "                         ?,"
						 + "						 ?, ?,	?, 	?, 	?,"
						 + "						 ?,	?,	?,	?, 	?,"
						 + "						 ?,		?,	?,		?,		?,"
						 + "						 ?,		?, 		"
						 + "						 ?,			?,		?,		?,"
						 + "						 ?,			?,	?,	?) ";
		
		int nbRowsAffected = getJdbcTemplate().update(reqUpdate, new Object[]{
				communs.getUaj().getEtab_uaj_id(),
				communs.getUaj().getNum_siren(),
				communs.getUaj().getDenom_principale(),
				communs.getUaj().getDenom_complete(),
				communs.getUaj().getNom_responsable(),
				communs.getUaj().getQual_responsable(),
				communs.getUaj().getLigne_adresse_1(),
				communs.getUaj().getLigne_adresse_2(),
				communs.getUaj().getLigne_adresse_3(),
				communs.getUaj().getBoite_postale(),
				communs.getUaj().getCommune_etrangere(),
				communs.getUaj().getTelephone(),
				communs.getUaj().getEmail_1(),
				communs.getUaj().getCode_type_etab(),
				communs.getUaj().getCode_secteur(),
				communs.getUaj().getCode_postal(),
				communs.getUaj().getCode_commune_insee(),
				communs.getUaj().getCode_pays(),
				communs.getAnneeScolaire().getDate_debut_eleves(),
				communs.getAnneeScolaire().getDate_fin_eleves(),
				communs.getAnneeScolaire().getDate_debut_profs(),
				communs.getAnneeScolaire().getDate_fin_profs(),
				communs.getAnneeScolaireAD().getDate_debut_eleves(),
				communs.getAnneeScolaireAD().getDate_fin_eleves(),
				communs.getAnneeScolaireAD().getDate_debut_profs(),
				communs.getAnneeScolaireAD().getDate_fin_profs(),
				base.getAnnee(),
				base.getEtablissement().getId()
		});
		if(nbRowsAffected == 0){
			// insert
			nbRowsAffected = getJdbcTemplate().update(reqInsert, new Object[]{
					base.getAnnee(), 		
					base.getEtablissement().getId(),				
					communs.getUaj().getEtab_uaj_id(),
					communs.getUaj().getNum_siren(),
					communs.getUaj().getDenom_principale(),
					communs.getUaj().getDenom_complete(),
					communs.getUaj().getNom_responsable(),
					communs.getUaj().getQual_responsable(),
					communs.getUaj().getLigne_adresse_1(),
					communs.getUaj().getLigne_adresse_2(),
					communs.getUaj().getLigne_adresse_3(),
					communs.getUaj().getBoite_postale(),
					communs.getUaj().getCommune_etrangere(),
					communs.getUaj().getTelephone(),
					communs.getUaj().getEmail_1(),
					communs.getUaj().getCode_type_etab(),
					communs.getUaj().getCode_secteur(),
					communs.getUaj().getCode_postal(),
					communs.getUaj().getCode_commune_insee(),
					communs.getUaj().getCode_pays(),
					communs.getAnneeScolaire().getDate_debut_eleves(),
					communs.getAnneeScolaire().getDate_fin_eleves(),
					communs.getAnneeScolaire().getDate_debut_profs(),
					communs.getAnneeScolaire().getDate_fin_profs(),
					communs.getAnneeScolaireAD().getDate_debut_eleves(),
					communs.getAnneeScolaireAD().getDate_fin_eleves(),
					communs.getAnneeScolaireAD().getDate_debut_profs(),
					communs.getAnneeScolaireAD().getDate_fin_profs(),
			});
		}
		
		return nbRowsAffected == 1;
	}*/
}
